Podemos especificar propiedades de entorno para el JNDI usando el par�metro de entorno del constructor de InitialContext y ficheros de recursos de aplicaci�n. Tambi�n se podr�an especificar varias propiedades de entorno JNDI usando propiedades del sistema y par�metros de applet, como se describe en secciones posteriores.
�Ficheros de Recursos de Aplicaci�n
Para simplificar la tarea de configurar el entorno necesario para una aplicaci�n JNDI, podr�amos distribuir ficheros de recursos de aplicaci�n junto con los componentes de la aplicaci�n y los proveedores de servicios. Un fichero de recursos de aplicaci�n tiene el nombre jndi.properties. Contiene una lista de parejas clave/valor presentadas en el formato de fichero de propiedades (ver java.util.Properties).
La clave es el nombre de la propiedad (por ejemplo, java.naming.factory.object) y el valor es un string en el formato definido para esa propiedad.
Aqu� tenemos un ejemplo de un fichero de recursos de aplicaci�n.
java.naming.factory.object=com.sun.jndi.ldap.AttrsToCorba:com.wiz.from.Person java.naming.factory.state=com.sun.jndi.ldap.CorbaToAttrs:com.wiz.from.Person java.naming.factory.control=com.sun.jndi.ldap.ResponseControlFactory java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory java.naming.provider.url=ldap://localhost:389/o=jnditutorial com.sun.jndi.ldap.netscape.schemaBugs=true
Observamos que no se aplican restricciones sobre los tipos de propiedades de entorno que podemos tener en este fichero.
El JNDI lee autom�ticamente el ficheros de recursos de aplicaci�n desde los classpaths de todos los componentes y desde JAVA_HOME/lib/jndi.properties, donde JAVA_HOME es el directorio que contiene nuestro JRE (Java Runtime Environment). El JNDI pone las propiedades de estos ficheros a disposici�n de los proveedores de servicios y de otros componentes que necesiten utilizarlas. Por lo tanto estos ficheros deben considerarse como abiertos a todo el mundo y no deber�an contener informaci�n sensible, como passwords, etc.
|
Nota:
Excepto para JAVA_HOME/lib/jndi.properties, los ficheros de recursos de aplicaci�n s�lo se soportan cuando se usa la Plataforma Java 2. Si usamos el JDK 1.1, s�lo podremos ver JAVA_HOME/lib/jndi.properties. |
Por ejemplo, abajo tenemos un programa que lista un contexto sin especificar ninguna propiedad de entorno en el constructor de InitialContext.
InitialContext ctx = new InitialContext();
NamingEnumeration enum = ctx.list("");
Si ejecutamos este programa con el fichero jndi.properties mostrado anteriormente, listar� los contenidos de la entrada o=jnditutorial en el servidor LDAP especificado.
El uso de ficheros de recursos de aplicaci�n para especificar cualquier propiedad de entorno JNDI permite configurar al JNDI con una programaci�n m�nima. Usando el fichero JAVA_HOME/lib/jndi.properties, tambi�n podemos configurar el JNDI para todas las aplicaciones y applets JNDI que usen el mismo interprete Java.
Si usamos ficheros de recursos de aplicaci�n, debemos recordar conceder a nuestro applet o aplicaci�n los permisos para leer todos los ficheros de recursos de aplicaci�n.
�Propiedades del Sistema
Una propiedad del sistema es una pareja clave/valor que el entorno de ejecuci�n java define para describir al usuario, en entorno del sistema y el sistema java. El entorno de ejecuci�n define y usa un conjunto de propiedades del sistema por defecto. Se pueden poner otras propiedades a disposicion de un programa Java mediante la opci�n -D de la l�nea de comandos del int�rprete java. Por ejemplo, ejecutando el int�rprete de la siguiente forma.
# java -Dmyenviron=abc Main
se a�ade la propiedad myenviron con el valor abc a la lista de propiedades del sistema visible para el programa Main.
La clase java.lang.System contiene m�todos est�ticos para leer y actualizar propiedades del sistema. La habilidad de leer o actualizar cualquier propiedad del sistema est� controlado por la pol�tica de seguridad del sistema de ejecuci�n Java.
El JNDI lee las siguientes propiedades est�ndars JNDI desde las propiedades del sistema.
java.naming.factory.initial java.naming.factory.object java.naming.factory.state java.naming.factory.control java.naming.factory.url.pkgs java.naming.provider.url java.naming.dns.url
Cuando configuramos propiedades del sistema, estas propiedades de entorno afectan a los contextos de todas las aplicaciones o applets (si el applet tiene permisos para leer dichas propiedades).
Usando el mismo programa del ejemplo de fichero de recursos de aplicaci�n anterior, especificando la factor�a de contexto inicial a usar dando el contexto inicial a utilizar en la l�nea de comandos. Aqu� tenemos dos ejemplos.
# java -Djava.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory \
-Djava.naming.provider.url=ldap://localhost:389/o=jnditutorial \
List
# java -Djava.naming.factory.initial=com.sun.jndi.fscontext.RefFSContextFactory \
-Djava.naming.provider.url=file:/tmp \
List
El primer ejemplo usa LDAP, y el segundo usa el sistema de ficheros.
Usar las propiedades del sistema para especificar propiedades de entorno est�ndar JNDI permite configurar el JNDI con una programaci�n m�nima. Sin embargo, probablemente s�lo es conveniente usarlas desde scripts. Esto es por que los �tems con nombres de propiedades largos deben especificarse sobre la l�nea de comandos. Tambi�n, los applets generalmente no tienen permiso para leer propiedades del sistema arbitrarias y debe concedersele expl�citamente el permiso para hacerlo.
�Par�metros de Applet
Podemos pasarle par�metros a un applet usando una sencilla pareja clave/valor. Estas se especifican en el fichero HTML que referencia al applet.
El c�mo se especifican dependen del contexto del applet. Por ejemplo, si el applet es referenciado desde una etiqueta applet, especificaremos los par�metros usando la etiqueta param. Aqu� tenemos un ejemplo.
<param name=java.naming.factory.initial value=com.sun.jndi.ldap.LdapCtxFactory> <param name=java.naming.provider.url value=ldap://localhost:389/o=jnditutorial>
Si el applet es referenciado desde el Java Plug-in, especificaremos sus par�metros usando parejas de clave/valor.
Aqu� tenemos un ejemplo.
java.naming.provider.url="ldap://localhost:389/o=jnditutorial" java.naming.factory.initial="com.sun.jndi.ldap.LdapCtxFactory"
Para que el JNDI acceda a los par�metros de un applet, debemos configurar la propiedad de entorno Context.APPLET ("java.naming.applet"). El JNDI lee las siguientes propiedades est�ndars del JNDI desde los par�metros del applet.
java.naming.factory.initial java.naming.factory.object java.naming.factory.state java.naming.factory.control java.naming.factory.url.pkgs java.naming.provider.url java.naming.dns.url
Aqu� tenemos un ejemplo que a�ade una propiedad ("java.naming.applet") al entorno.
// Put this applet instance into the environment
Hashtable env = new Hashtable();
env.put(Context.APPLET, this);
// Pass the environment to the initial context constructor
Context ctx = new InitialContext(env);
// List the objects
NamingEnumeration enum = ctx.list(target);
while (enum.hasMore()) {
out.println(enum.next());
}
ctx.close();
El JNDI obtiene las propiedades de entorno necesarias desde los par�metros del applet (mostrados anteriormente).
Este uso de los par�metros de applets para especificar propiedades de entorno JNDI est�ndars permite configurar al JNDI� de la misma forma que un applet realiza normalmente la configuraci�n de otros subsistemas o componentes. Las propiedades del sistema y los ficheros de recursos de aplicaci�n no son buenos mecanismos para que los applets dependan de ellos.
Porque los applets normalmente no pueden leer propiedades del sistema o ficheros arbitrarios (incluyendo jndi.properties).